package com.asurplus.server.starter;

import com.asurplus.common.consts.Const;
import com.asurplus.common.util.INetUtil;
import com.asurplus.server.handle.MyServerAioHandler;
import com.asurplus.server.listener.MyServerAioListener;
import org.tio.server.TioServer;
import org.tio.server.TioServerConfig;
import org.tio.server.intf.TioServerHandler;
import org.tio.server.intf.TioServerListener;
import org.tio.utils.hutool.StrUtil;

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * 服务端启动类
 *
 * @author lizhou
 */
public class ServerStarter {

    private static Logger log = Logger.getLogger(ServerStarter.class.getName());

    /**
     * handler, 包括编码、解码、消息处理
     */
    public static TioServerHandler serverAioHandler = new MyServerAioHandler();

    /**
     * 事件监听器，可以为null，但建议自己实现该接口，可以参考showcase了解些接口
     */
    public static TioServerListener serverAioListener = new MyServerAioListener();

    /**
     * 一组连接共用的上下文对象
     */
    public static TioServerConfig serverTioConfig = new TioServerConfig("TioServerConfig", serverAioHandler, serverAioListener);

    /**
     * 服务端入口
     */
    public static TioServer tioServer = null;

    /**
     * 启动程序入口
     */
    public static void run() throws IOException {
        // 心跳超时时间
        serverTioConfig.setHeartbeatTimeout(Const.TIMEOUT);
        tioServer = new TioServer(serverTioConfig);
        // 启动服务
        tioServer.start(Const.SERVER, Const.PORT);
    }

}